package com.baosight.risk.api.rire;

import com.baosight.risk.base.service.BaseService;
import com.baosight.risk.service.rire.entity.RireRiskEvent;
import com.baosight.risk.service.rire.entity.RireRiskTarget;
import com.baosight.risk.service.rire.entity.RireRiskWarningStatus;
import com.baosight.risk.service.rire.vo.RiskWarningStatusVO;
import com.baosight.risk.service.riwa.entity.RiwaRiskWaringRule;
import com.baosight.risk.service.riwa.entity.RiwaRiskWaringTarget;
import com.baosight.risk.service.riwa.vo.RiwaRiskWaringVO;

import java.util.List;
import java.util.Map;

/**
 * @Author phinxe
 * @Date 2019-12-11
 */

/**
 * 重点风险披露报告IService
 */
public interface RireRiskWarningStatusService extends BaseService<RireRiskWarningStatus> {
    /**
     * 根据披露报告ID查询VO实体
     *
     * @param id 披露报告ID
     * @return
     */
    RiskWarningStatusVO getWarningById(String id);

    /**
     * 根据ID获取披露报告
     * @param id 披露报告ID
     * @return
     */
    Map<String, Object>  getReportById(String id) throws Exception;

    /**
     * 根据露报告ID查询重点风险指标集合
     *
     * @param reportId 披露报告ID
     * @return
     */
    List<RireRiskTarget> getTargetList(String reportId);

    /**
     * 根据露报告ID查询重点风险事件集合
     *
     * @param reportId 披露报告ID
     * @return
     */
    List<RireRiskEvent> getEventList(String reportId);

    /**
     * 根据露报告ID查询模型
     * @param reportId 披露报告ID
     * @param commonFlag 是否只查询普通模型
     * @return
     */
    Object getModel(String reportId, Boolean commonFlag);

    /**
     * 修改披露报告
     *
     * @param report 披露报告
     * @return
     */
    Boolean updateWarning(RireRiskWarningStatus report);

    /**
     * 修改披露报告风险指标
     *
     * @param targets 风险指标集合
     * @return 返回指标集合，主要是为了在新增的时候返回ID ，避免页面刷新时未保存的数据丢失
     */
    List<RireRiskTarget> updateTarget(List<RireRiskTarget> targets);

    /**
     * 修改披露报告风险事件
     *
     * @param events 风险事件集合
     * @return 返回事件集合，主要是为了在新增的时候返回ID ，避免页面刷新时未保存的数据丢失
     */
    List<RireRiskEvent> updateEvent(List<RireRiskEvent> events);

    /**
     * 修改披露报告模型
     *
     * @param modelVO 披露报告模型
     * @return
     */
    Object updateModel(RiwaRiskWaringVO modelVO);

    /**
     * 删除披露报告风险指标
     *
     * @param targets 风险指标集合
     * @return
     */
    Boolean deleteTarget(List<RireRiskTarget> targets);

    /**
     * 删除披露报告风险事件
     *
     * @param events 风险事件集合
     * @return
     */
    Boolean deleteEvent(List<RireRiskEvent> events);

    /**
     * 删除披露报告模型规则，同时删除规则下的指标
     *
     * @param rules 模型规则集合
     * @return
     */
    Boolean deleteModelRule(List<RiwaRiskWaringRule> rules);

    /**
     * 删除披露报告模型规则指标
     *
     * @param targets 模型规则指标集合
     * @return
     */
    Boolean deleteModelTarget(List<RiwaRiskWaringTarget> targets);

    Integer updateCompFlag(RireRiskTarget target);

    /**
     * 推送基地信息到股份
     * @param warningId
     * @return
     */
    Map pushWarningStatusData(String warningId);

}
